package vip.xiaonuo.sys.modular.wechat.api.service;

import vip.xiaonuo.sys.api.dto.WechatLoginCallbackDto;
import vip.xiaonuo.sys.modular.wechat.api.dto.WechatCheckinResponse;
import vip.xiaonuo.sys.modular.wechat.api.dto.WechatNoSensitiveUser;

import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2025/7/14 18:35
 */
public interface WechatService {

    /**
     * 获取Token
     *
     * @return
     */
    String getToken();

    /**
     * 根据登录Code获取企业微信ID
     *
     * @param loginCode
     * @return
     */
    WechatLoginCallbackDto getWechatCallbackByLoginCode(String loginCode);

    /**
     * 保存企业微信敏感信息
     *
     * @param userTicket
     * @param userId
     */
    void saveSensitiveData(String userTicket, String userId);

    /**
     * 发送文本消息
     *
     * @param toUserId 收件人，逗号隔开
     * @param content
     */
    void sendTextMessage(String toUserId, String content);

    /**
     * 根据微信ID获取用户信息
     *
     * @param userId
     * @return
     */
    WechatNoSensitiveUser getUserById(String userId);

    /**
     * 企业微信回调
     *
     * @param msgSignature
     * @param timestamp
     * @param nonce
     * @param postData
     */
    void callback(String msgSignature, String timestamp, String nonce, String postData);

    /**
     * 手动调用企业微信回调
     *
     * @param msg
     */
    void wechatEvent(String msg);

    /**
     * 获取打卡记录
     *
     * @param currentTime
     * @param beforeTime
     * @param userIdList
     * @return
     */
    WechatCheckinResponse getCheckinRecord(String currentTime, String beforeTime, List<String> userIdList);
}
